package com.sunwayworld.module.sys.todo.service.impl;

import com.sunwayworld.framework.spring.annotation.GikamBean;
import com.sunwayworld.module.sys.menu.service.CoreMenuService;
import com.sunwayworld.module.sys.todo.mapper.LimsTodoMapper;
import com.sunwayworld.module.sys.todo.service.CoreTodoConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Repository;

@GikamBean
@Repository
public class LimsCoreTodoServiceImpl extends CoreTodoServiceImpl {

    @Autowired
    private CoreMenuService menuService;

    @Lazy
    @Autowired
    private LimsTodoMapper todoMapper;

    @Autowired
    private CoreTodoConfigService configService;

    // 暂时不重写系统待办功能,框架升级已经适配
    // public Page<CoreTodoDTO> selectCurrentUserTodoList(String category, boolean countOnly, boolean effectiveOnly) {
    //     if (ApplicationContextHelper.stressTesting()) {
    //         return new Pagination();
    //     } else if (!LocalContextHelper.isUserLogin()) {
    //         return new Pagination();
    //     } else {
    //         List<CoreTodoConfigBean> configList = this.configService.selectActivatedConfigList();
    //         if (configList.isEmpty()) {
    //             return new Pagination();
    //         } else {
    //             List<CoreMenuBean> menuList = this.menuService.selectCurrentUserMenuList();
    //             if (menuList.isEmpty()) {
    //                 return new Pagination();
    //             } else {
    //                 MapperParameter parameter = new MapperParameter();
    //                 List<LimsTodoDTO> todoDTOS = todoMapper.selectAllTodoQty(parameter);
    //
    //                 List<CoreMenuBean> menuBeans = menuList.stream().filter(m -> configList.stream()
    //                         .anyMatch(c -> m.getId().equalsIgnoreCase(c.getMenuId()))).collect(Collectors.toList());
    //                 if (menuBeans.isEmpty()) {
    //                     return new Pagination();
    //                 }
    //                 List<CoreTodoDTO> todoList = menuBeans.stream().map(m -> {
    //                     CoreTodoConfigBean config = configList.stream().filter(c -> c.getMenuId().equalsIgnoreCase(m.getId())).findFirst().get();
    //                     CoreTodoDTO todo = new CoreTodoDTO();
    //                     todo.setOrderNo(config.getOrderNo());
    //                     todo.setVoiceWarning(config.getVoiceWarning());
    //                     String jsonParam = config.getJsonParam();
    //                     todo.setQty(0);
    //                     if (!StringUtils.isEmpty(jsonParam)) {
    //                         LimsTodoDTO tod = JSON.parseObject(jsonParam, LimsTodoDTO.class);
    //                         if (tod != null && tod.getTodoType() != null) {
    //                             if (!StringUtils.isBlank(tod.getStatus())) {
    //                                 Optional<LimsTodoDTO> first = todoDTOS.stream().filter(t -> t.getTodoType().equalsIgnoreCase(tod.getTodoType())
    //                                         && StringUtils.equals(t.getStatus(), tod.getStatus())).findFirst();
    //                                 first.ifPresent(d -> todo.setQty(d.getNum()));
    //                             } else {
    //                                 Optional<LimsTodoDTO> first = todoDTOS.stream().filter(t -> t.getTodoType().equalsIgnoreCase(tod.getTodoType())).findFirst();
    //                                 first.ifPresent(d -> todo.setQty(d.getNum()));
    //                             }
    //                         }
    //                     }
    //                     todo.setMenuId(config.getMenuId());
    //                     todo.setModelName(StringUtils.isEmpty(config.getI18nCode()) ? config.getName() : config.getI18nCode());
    //                     todo.setHref(menuService.getReplacedHref(m));
    //                     if (!StringUtils.isEmpty(config.getIcon())) {
    //                         todo.setExt$Item("todoIconUrl", "/static/icon/todo/" + config.getIcon());
    //                     }
    //                     return todo;
    //                 }).filter(c -> c.getQty() > 0).collect(Collectors.toList());
    //
    //                 return new Pagination(todoList);
    //             }
    //         }
    //     }
    // }
}
